import { Pipe, PipeTransform, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Utils } from '../utils/utils';

/**
 * 本管道用于基于IISP构架实现语言国际化，或基于字典映射国际语言
 * @example 
 * import { i18nPipeModule } from 'iisp-ng';
    
 * 1.映射国际语言：
 * 1.1 无参数：{{ key | i18n}} 
 * 1.2 有参数：{{ key | i18n: params:[arg1, arg2...]}}//注意：映射国际语言时，如果找不到语言标签，则返回key值
 * 
 * 2.映射字典值：{{ orgCode | i18n: null: orgMap}} //以orgMap为字典，orgCode为键，映射值，注意: 作为字典映射时，key可以是代码，也可以是 RefBean类型;
 * //如果key值为空，则缺省key为“-”，若key值在字典中没找到，则直接返回key本身值。
 */
@Pipe( { name: 'i18n' } )
export class i18nPipe implements PipeTransform {
    transform( key: any, params?: string[], dictMap?: Object ): string {
        if ( dictMap ) {
            return Utils.lookup( key, dictMap );
        }
        return Utils.resolveLocalizedMessage( key, params );
    }
}

@NgModule( {
    imports: [CommonModule],
    exports: [i18nPipe],
    declarations: [i18nPipe]
} )
export class i18nPipeModule { }